/**
 * 函数名称相同，但是参数不同（长度不同和类型不同）
 * 首先根据调用的参数进行判断是number还是string
 * 如果是number，就执行function add(num1: number, num2: number): number;
 * 如果是string，就执行function add(num1: string, num2: string): string;
 * 由于这两个代码，没有代码块，所以又会将参数传递到function add(num1: any, num2: any) 中，然后返回结果 
 */
//                参数类型      参数类型     返回值类型
function add(num1: number, num2: number): number;
function add(num1: string, num2: string): string;

function add(num1: any, num2: any): any {
    if (typeof num1 === 'string' && typeof num2 === 'string') {
        return num1.length + num2.length
    }
    return num1 + num2
}

console.log(add(10, 20));
console.log(add('sda', 'sds'));

// 不包含上面面定义的函数重载的，实现函数不能直接被调用
// add({ name: '会' }, { age: 18 })
export { }